﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;
using BaseDeDatos.Exceptions;
using Protocolo;

public partial class MasterPage : System.Web.UI.MasterPage
{
    private Persona _Person;

    public Persona Person
    {
        get { return _Person; }
        set { _Person = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Person = (Persona)Session["usuario"];
        if (Person != null)
        {
            if (Person.GetType().IsInstanceOfType(new Guia()))
            {
                // Colocamos invisible el panel donde esta el formulario para loguearse
                Panel4.Visible = false;
                // Colocamos visible el menu que dice Navegando por...
                menu_bienvenida.Visible = true;
                // Colocamos visible el menu con las opciones de lo que puede realizar el guia.
                menu_guia.Visible = true;
                menu_organizador.Visible = false;
                menu_coordinador.Visible = false;
            }
            //Si el usuario es organizador
            else if (Person.GetType().IsInstanceOfType(new Organizador()))
            {
                // Colocamos invisible el panel donde esta el formulario para loguearse
                Panel4.Visible = false;
                // Colocamos visible el menu que dice Navegando por...
                menu_bienvenida.Visible = true;
                // Colocamos visible el menu con las opciones de lo que puede realizar el organizador.
                menu_organizador.Visible = true;
                menu_coordinador.Visible = false;
                menu_guia.Visible = false;
            }
            //Si el usuario es coordinador
            else if (Person.GetType().IsInstanceOfType(new Coordinador()))
            {
                // Colocamos invisible el panel donde esta el formulario para loguearse
                Panel4.Visible = false;
                // Colocamos visible el menu que dice Navegando por...
                menu_bienvenida.Visible = true;
                // Colocamos visible el menu con las opciones de lo que puede realizar el organizador.
                menu_coordinador.Visible = true;
                menu_guia.Visible = false;
                menu_organizador.Visible = false;
            }
        }
    }

    /// <summary>
    /// Procedimiento activado cuando el usuario le da click al boton de Aceptar.
    /// Activa los menu dependiendo del usuario que se este logeando.
    /// </summary>
    /// <param name="sender">Objeto al que se le esta haciendo referencia en el evento</param>
    /// <param name="e">Evento que dispara el boton al darle click</param>
    protected void LoginButton_Click(object sender, EventArgs e)
    {
        try
        {
            // Obtenemos el valor del username captado a traves del TextField
            String Use = UserName.Text;
            // Obtenemos ele valor del Password captado a traves del TextField
            String Pass = Password.Text;
            // Verificamos si existe la persona en la BD.
            Person = Verificador.logeo(Use, Pass);


            if (Person == null)
            {
                logeado.Visible = true;
            }
            else
            {
                Session.Add("usuario", Person);
                // Ponemos invisible el panel del Login si fue encontrado la persona en la BD.
                /*this.Panel1.Visible = false;
                // Ponemos visible el panel que contiene Navengando por...
                this.menu_bienvenida.Visible = true;
                // Ponemos visible el menu del usuario según el rol.
                //this.menu_guia.Visible = true;
                this.menu_coordinador.Visible = true;
                //this.menu_organizador.Visible = true;
                */
                //Colocar luego de obtener la persona
                //Si el usuario es guia
                if (Person.GetType().IsInstanceOfType(new Guia()))
                {
                    // Colocamos invisible el panel donde esta el formulario para loguearse
                    Panel4.Visible = false;
                    // Colocamos visible el menu que dice Navegando por...
                    menu_bienvenida.Visible = true;
                    // Colocamos visible el menu con las opciones de lo que puede realizar el guia.
                    menu_guia.Visible = true;
                    menu_organizador.Visible = false;
                    menu_coordinador.Visible = false;
                }
                //Si el usuario es organizador
                else if (Person.GetType().IsInstanceOfType(new Organizador()))
                {
                    // Colocamos invisible el panel donde esta el formulario para loguearse
                    Panel4.Visible = false;
                    // Colocamos visible el menu que dice Navegando por...
                    menu_bienvenida.Visible = true;
                    // Colocamos visible el menu con las opciones de lo que puede realizar el organizador.
                    menu_organizador.Visible = true;
                    menu_coordinador.Visible = false;
                    menu_guia.Visible = false;
                }
                //Si el usuario es coordinador
                else if (Person.GetType().IsInstanceOfType(new Coordinador()))
                {
                    // Colocamos invisible el panel donde esta el formulario para loguearse
                    Panel4.Visible = false;
                    // Colocamos visible el menu que dice Navegando por...
                    menu_bienvenida.Visible = true;
                    // Colocamos visible el menu con las opciones de lo que puede realizar el organizador.
                    menu_coordinador.Visible = true;
                    menu_guia.Visible = false;
                    menu_organizador.Visible = false;
                }

                Response.Redirect("~/Default.aspx");

            }
        }
        catch (BDException ae)  //alguno de los argumentos es incorrectos
        {
            MessageBox.Show("Error al consultar la información para iniciar sesión!!!", "Información...",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
            Response.Redirect("Default.aspx");
        }
        catch (ConexionFallidaException ade)  //Error de conexion (hay que buscar)
        {
            MessageBox.Show("Error de conexion a la Base de Datos, por favor intente más tarde!!!", "Información...",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
            Response.Redirect("Default.aspx");
        }

    }

    /// <summary>
    /// Procedimiento que es utilizado para cerrar la sesion del usuario.
    /// </summary>
    /// <param name="sender">Objeto al que se le esta haciendo referencia en el evento</param>
    /// <param name="e">Evento que se dispara cuando se le da al boton del menu</param>
    protected void Menu2_MenuItemClick(object sender, MenuEventArgs e)
    {
        if (menu_guia.SelectedValue.Equals("Cerrar Sesión") || menu_coordinador.SelectedValue.Equals("Cerrar Sesión") ||
            menu_organizador.SelectedValue.Equals("Cerrar Sesión"))
        {
            Session["usuario"] = null;
            Session.Abandon();
            // Debo destruir la variable que me guarde la session actual
            Person = null;
            // Colocamos visible el panel donde esta el login.
            Panel1.Visible = true;
            // Colocamos invisible el panel donde sale Navegando por...
            menu_bienvenida.Visible = false;
            // Colocamos invisible el panel donde sale el menu de coordinador.
            menu_coordinador.Visible = false;
            // Redireccionamos a la página principal.
            Response.Redirect("~/Default.aspx");

        }
    }
}
